# -*-  coding:utf-8 -*- 
# Author : lihongliang

# 特性 1 只能取一次  2只能向前走   3 没数据了就报错

# 斐波拉契数列

def fib(num):
    n,a,b = 0,0,1
    while n < num :
        print("befre ")
        yield b  # 把函数的执行过程冻结在这一步，并把b 的值得返回为外面的next（）
        print("after  b:",b)
        a,b = b,a+b
        n += 1
    return 'done'

print(fib(15))  #函数内有yield， 函数名加()不执行，只是生成一个生成器对象
f = fib(15)

print(next(f))
# print(next(f))
# print(next(f))
# print(next(f))
# print(next(f))
# print(next(f))

# for i in f:
#     print(i)